<?php
App::uses('AppController', 'Controller');
/**
 * Produtos Controller
 *
 * @property Produto $Produto
 */
class ProdutosController extends AppController {


/**
 * index method
 *
 * @return void
 */
	public function index() {
		#filter results
		$this->Filter->addFilters(
			array(
				'filter1' => array(
					'Produto.nome' => array(
						'operator' => 'LIKE',
						'value' => array(
							'before' => '%', // opcional
							'after'  => '%'  // opcional
						)
					)
				),
				'filter2' => array(
					'Produto.fornecedore_id' => array(
						'select' => $this->Filter->select('Selecione o Fornecedor...', $this->Produto->Fornecedore->find('list'))
					)
				)
			)
		);
		$this->Filter->setPaginate('order', 'Produto.nome ASC'); // opcional
		$this->Filter->setPaginate('limit', 15);              // opcional
		
		// Define conditions
		$this->Filter->setPaginate('conditions', $this->Filter->getConditions());
		
		$this->Produto->recursive = 0;
		$this->set('produtos', $this->paginate());
	}

/**
 * view method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function view($id = null) {
		if (!$this->Produto->exists($id)) {
			throw new NotFoundException(__('Código do produto inválido'));
		}
		$options = array('conditions' => array('Produto.' . $this->Produto->primaryKey => $id));
		$this->set('produto', $this->Produto->find('first', $options));
	}

/**
 * add method
 *
 * @return void
 */
	public function add() {
		if ($this->request->is('post')) {
			$this->request->data['Produto']['status'] = 1;
			$this->Produto->create();
			
			if ($this->Produto->save($this->request->data)) {
				$this->Session->setFlash(__('O produto foi salvo com sucesso.'), 'default', array('class' => 'alert alert-success'));
				return $this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('O produto não pode ser salvo. Por favor, tente novamente.'), 'default', array('class' => 'alert alert-danger'));
			}
		}
		$tipoProdutos = $this->Produto->TipoProduto->find('list');
		$unidades = $this->Produto->Unidade->find('list');
		$fornecedores = $this->Produto->Fornecedore->find('list');
		$this->set(compact('tipoProdutos', 'unidades', 'fornecedores'));
	}

/**
 * edit method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function edit($id = null) {
		if (!$this->Produto->exists($id)) {
			throw new NotFoundException(__('Produto inválido.'));
		}
		if ($this->request->is('post') || $this->request->is('put')) {
			if ($this->Produto->save($this->request->data)) {
				$this->Session->setFlash(__('O produto foi salvo com sucesso.'), 'default', array('class' => 'alert alert-success'));
				return $this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('O produto não pode ser salvo. Por favor, tente novamente.'), 'default', array('class' => 'alert alert-danger'));
			}
		} else {
			$options = array('conditions' => array('Produto.' . $this->Produto->primaryKey => $id));
			$this->request->data = $this->Produto->find('first', $options);
		}
		$tipoProdutos = $this->Produto->TipoProduto->find('list');
		$unidades = $this->Produto->Unidade->find('list');
		$fornecedores = $this->Produto->Fornecedore->find('list');
		$this->set(compact('tipoProdutos', 'unidades', 'fornecedores'));
	}

/**
 * delete method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function delete($id = null) {
		$this->Produto->id = $id;
		if (!$this->Produto->exists()) {
			throw new NotFoundException(__('Código do produto inválido'));
		}
		$this->request->onlyAllow('post', 'delete');
		if ($this->Produto->delete()) {
			$this->Session->setFlash(__('Produto deletado com sucesso.'), 'default', array('class' => 'alert alert-success'));
		} else {
			$this->Session->setFlash(__('O produto não pode ser deletado. Por favor, tente novamente.'), 'default', array('class' => 'alert alert-danger'));
		}
		return $this->redirect(array('action' => 'index'));
	}

}